/*
 请实现一个函数用来匹配包括'.'和'*'的正则表达式。模式中的字符'.'表示任意一个字符，
 而'*'表示它前面的字符可以出现任意次（包含0次）。 在本题中，匹配是指字符串的所有字符匹配整个模式。
 例如，字符串"aaa"与模式"a.a"和"ab*ac*a"匹配，但是与"aa.a"和"ab*a"均不匹配
 
 */
bool match(char* str, char* pattern)
{
    if (pattern[0] == 0 && str[0] == 0)//两个均为空串;递归出口（匹配的话,会不断移位至两个都为空串）
    {
        return true;
    }
    
    if (pattern[1] == '*')
    {
        if (match(str, pattern + 2))//若pattern第二位为*，*能匹配两位，则相当于str于pattern+2匹配 eg null,q*
            return true;
    }
    
    if ((pattern[0] == '.' && str[0]) || str[0] == pattern[0]) //如果pattern第一位为0/两个串首字符相同
    {
        if (match(str + 1, pattern + 1))  //相当于都后移1位再匹配
            return true;
        if (pattern[1] == '*' && match(str + 1, pattern))  //若后移一位首字母不同，但是pattern为*，则相当于str后移一位再与pattern匹配
        {
            return true;
        }
    }
    
    return false;
}
//方法二：使用正则库...

 bool match(char* str, char* pattern)
    {
        regex reg(pattern);
        return regex_match(str,reg);
    }